package com.qf.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qf.entity.TbCourse;
import com.qf.service.CourseService;
import com.qf.utils.ResultMsg;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.util.HashMap;

/**
 * @author 王希卓
 * @Date 2023/7/17 14:19
 * 课程
 */
@RestController
public class CourseController {

    @Autowired
    private CourseService courseService;

    /**
     * 分页查询所有课程
     * @param page 当前页码
     * @param limit 每页显示条数
     * @param keyword 关键字
     * @return
     */
    @GetMapping("/course/findAll")
    public ResultMsg findAll(int page,int limit, String keyword){
        return courseService.findAll(page,limit,keyword);
    }
    @GetMapping("/course/findOrderPriceByType")
    public ResultMsg findOrderPriceByType(int page,int limit,String keyword,String typeName){
        return courseService.findOrderPriceByType(page,limit,keyword,typeName);
    }
    /**
     * 页面加载,查询最热及推荐课程
     * @param page
     * @param limit
     * @param ststus
     * @return
     */
    @GetMapping("/course/findAllByststus")
    public ResultMsg findAll(int page,int limit, int ststus){
        if (ststus == 0){
            HashMap<String, Page<TbCourse>> map = new HashMap<>();
            Page<TbCourse> page1 = courseService.findAll(page, limit, 1);
            Page<TbCourse> page2 = courseService.findAll(page, limit, 2);
            map.put("a",page1);
            map.put("b",page2);
            return ResultMsg.success(map);
        }
        Page<TbCourse> page1 = courseService.findAll(page, limit, ststus);
        return ResultMsg.success(page1);
    }
    /**
     * 根据分类查询分页查询课程
     * @param page 当前页
     * @param limit 每页显示条数
     * @param typeId 分类编号
     * @return
     */
    @GetMapping("/course/findByType")
    public ResultMsg findByType(int page,int limit,int typeId,String keyword){
        return courseService.findByType(page,limit,typeId,keyword);
    }
    /**
     * 添加或修改课程
     * @param tbCourse
     * @return
     */
    @PostMapping("/course/update")
    public ResultMsg update(@RequestBody TbCourse tbCourse){
        return courseService.update(tbCourse);
    }

    /**
     * 根据课程id删除课程
     * @param courseId
     * @return
     */
    @GetMapping("/course/del")
    public ResultMsg del(int courseId){
        return courseService.del(courseId);
    }

    /**
     * 根据课程id查询课程
     * @param courseId
     * @return
     */
    @GetMapping("/course/findOne")
    public ResultMsg findOne(int courseId){
        return courseService.findOne(courseId);
    }

    /**
     * 根据老师id查询课程
     * @param teacherId
     * @return
     */
    @GetMapping("/course/findByTeacherId")
    public ResultMsg findByTeacherId(int teacherId){
        return courseService.findByTeacherId(teacherId);
    }

    /**
     * 根据课程id查询其对应的课程内容,封装对应的老师实体,类型实体
     * @param courseId
     * @return
     */
    @GetMapping("/course/findOneById")
    public ResultMsg findOneById(int courseId){
        return courseService.findOneById(courseId);
    }

    /**
     * 根据老师id查询课程,根据课程名称模糊查询课程
     * @param keyword 课程模糊查询关键字
     * @param teacherId
     * @return
     */
    @GetMapping("/course/findAllCourse")
    public ResultMsg findAllT(Integer teacherId,String keyword){
        return courseService.findByTeacherId(teacherId,keyword);
    }

    /**
     * 图片上传
     * @param file
     * @return
     */
    @PostMapping("/course/upload")
    public ResultMsg uploadImg(MultipartFile file){
        return courseService.uploadImg(file);
    }
}
